LCD Pin Assignments

Pin number

Symbol

Level

I/O

Function

1

Vss

-

-

Power supply (GND)

2

Vcc

-

-

Power supply (+5V)

3

Vee

-

-

Contrast adjust

4

RS

0/1

I

0 = Instruction input
1 = Data input

5

R/W

0/1

I

0 = Write to LCD module
1 = Read from LCD module

6

E

1, 1->0

I

Enable signal

7

DB0

0/1

I/O

Data bus line 0 (LSB)

8

DB1

0/1

I/O

Data bus line 1

9

DB2

0/1

I/O

Data bus line 2

10

DB3

0/1

I/O

Data bus line 3

11

DB4

0/1

I/O

Data bus line 4

12

DB5

0/1

I/O

Data bus line 5

13

DB6

0/1

I/O

Data bus line 6

14

DB7

0/1

I/O

Data bus line 7 (MSB)

LCD Instructions

Instruction

Code

Description

Execution time**

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Clear display

0

0

0

0

0

0

0

0

0

1

Clears display and returns cursor to the home position (address 0).

1.64mS

Cursor home

0

0

0

0

0

0

0

0

1

*

Returns cursor to home position (address 0). Also returns display being shifted to the original position. DDRAM contents remains unchanged.

1.64mS

Entry mode set

0

0

0

0

0

0

0

1

I/D

S

Sets cursor move direction (I/D), specifies to shift the display (S). These operations are performed during data read/write.

40uS

Display On/Off control

0

0

0

0

0

0

1

D

C

B

Sets On/Off of all display (D), cursor On/Off (C) and blink of cursor position character (B).

40uS

Cursor/display shift

0

0

0

0

0

1

S/C

R/L

*

*

Sets cursor-move or display-shift (S/C), shift direction (R/L). DDRAM contents remains unchanged.

40uS

Function set

0

0

0

0

1

DL

N

F

*

*

Sets interface data length (DL), number of display line (N) and character font(F).

40uS

Set CGRAM address

0

0

0

1

CGRAM address

Sets the CGRAM address. CGRAM data is sent and received after this setting.

40uS

Set DDRAM address

0

0

1

DDRAM address

Sets the DDRAM address. DDRAM data is sent and received after this setting.

40uS

Read busy-flag and address counter

0

1

BF

CGRAM / DDRAM address

Reads Busy-flag (BF) indicating internal operation is being performed and reads CGRAM or DDRAM address counter contents (depending on previous instruction).

0uS

Write to CGRAM or DDRAM

1

0

write data

Writes data to CGRAM or DDRAM.

40uS

Read from CGRAM or DDRAM

1

1

read data

Reads data from CGRAM or DDRAM.

40uS

Remarks:
- DDRAM = Display Data RAM.
- CGRAM = Character Generator RAM.
- DDRAM address corresponds to cursor position.
- * = Don't care.
- ** = Based on Fosc = 250KHz.

LCD Bit Names

Bit name

Settings

I/D

0 = Decrement cursor position

1 = Increment cursor position

S

0 = No display shift

1 = Display shift

D

0 = Display off

1 = Display on

C

0 = Cursor off

1 = Cursor on

B

0 = Cursor blink off

1 = Cursor blink on

S/C

0 = Move cursor

1 = Shift display

R/L

0 = Shift left

1 = Shift right

DL

0 = 4-bit interface

1 = 8-bit interface

N

0 = 1/8 or 1/11 Duty (1 line)

1 = 1/16 Duty (2 lines)

F

0 = 5x7 dots

1 = 5x10 dots

BF

0 = Can accept instruction

1 = Internal operation in progress

LCD 8 Wire Interface Timings

LCD 4 Wire Interface Timings

LCD Character Set

LCD Circuit

Implementation Notes

The LCD panel connected to the PICmicro development board uses four wire mode, which means that you must send the data in two four bit chunks. Note also that the read/write (R/W) line is not connected. Instead it is pulled permanently low, putting the LCD panel into write mode at all times. If you connect this signal you will be able to read from the LCD (note that you would have to put the PICmicro port that you use into input mode to read from the LCD). This can help you get round memory limitations in the PICmicro, since it means that you can use the LCD to hold a copy of the screen information rather than holding it in a variable.